প্যাসক্যাল ভাষায় অপরিকল্পিত ত্রুটি (runtime errors) বা এক্সেপশন (exception) হ্যান্ডলিংয়ের জন্য try, except, এবং finally ব্লক ব্যবহার করা হয়। এর মাধ্যমে আপনি কোডের এমন অংশে ত্রুটি মোকাবিলা করতে পারেন যা স্বাভাবিকভাবে ত্রুটি তৈরি করতে পারে এবং সেই ত্রুটির জন্য একটি কাস্টম প্রক্রিয়া নির্ধারণ করতে পারেন।
এখানে প্রতিটি ব্লক কীভাবে কাজ করে তা বিস্তারিত আলোচনা করা হলো:
tryব্লক: এখানে আপনি সেই কোডটি রাখবেন যা আপনি পরীক্ষা করতে চান, অর্থাৎ যেখানে ত্রুটি হতে পারে।exceptব্লক: যদিtryব্লকের মধ্যে কোনো ত্রুটি ঘটে, তবে এটি সেই ত্রুটিকে ধরতে এবং এক্সেপশন হ্যান্ডলিং কোড চালাতে ব্যবহৃত হয়।finallyব্লক: এটি একটি ঐচ্ছিক ব্লক যাtryএবংexceptব্লকের পর থাকে। এটি সবসময় রান হয়, ত্রুটি ঘটুক বা না ঘটুক। এটি সাধারণত ক্লিনআপ কাজের জন্য ব্যবহৃত হয়, যেমন ফাইল বন্ধ করা, রিসোর্স মুক্ত করা ইত্যাদি।
উদাহরণ: try, except, এবং finally ব্লক
program ExceptionHandlingExample;
var
a, b, result: Integer;
begin
try
// ইউজারের ইনপুট নেওয়া
writeln('Enter the numerator:');
readln(a);
writeln('Enter the denominator:');
readln(b);
// শূন্য দিয়ে ভাগের চেষ্টা (যেটি ত্রুটি তৈরি করবে)
result := a div b;
writeln('Result: ', result);
except
on E: EDivByZero do
writeln('Error: Cannot divide by zero!');
on E: Exception do
writeln('An unexpected error occurred: ', E.Message);
finally
writeln('This block is always executed.');
end;
end.এখানে কী ঘটছে:
tryব্লক:a div bঅপারেশনটি এখানে রাখা হয়েছে। যেহেতু শূন্য দিয়ে ভাগ করলে একটি ত্রুটি ঘটবে, এটিexceptব্লকে চলে যাবে।exceptব্লক: এখানে দুটি এক্সেপশন হ্যান্ডলার দেওয়া হয়েছে:EDivByZero: এটি শূন্য দিয়ে ভাগের জন্য তৈরি করা এক্সেপশন।Exception: সাধারণ এক্সেপশন হ্যান্ডলিং।
finallyব্লক: এটি সবসময় রান হয়, ত্রুটি ঘটুক বা না ঘটুক। এটি সাধারণত ক্লিনআপ কার্যাদি করার জন্য ব্যবহৃত হয়।
এক্সেপশন হ্যান্ডলিংয়ের বিভিন্ন ধরনের ত্রুটি
আপনি প্যাসক্যাল ভাষায় বিভিন্ন ধরনের এক্সেপশন হ্যান্ডলিং করতে পারেন। কিছু সাধারণ এক্সেপশন টাইপ যেমন:
EDivByZero: শূন্য দিয়ে ভাগের সময় ত্রুটি।EOverflow: পূর্ণসংখ্যার সীমা ছাড়িয়ে যাওয়ার সময় ত্রুটি।Exception: সাধারণ এক্সেপশন যা সাধারণ যে কোনো ত্রুটির জন্য ব্যবহৃত হয়।
আরও উদাহরণ:
program MultipleExceptionsExample;
var
x, y: Integer;
begin
try
writeln('Enter first number:');
readln(x);
writeln('Enter second number:');
readln(y);
// পূর্ণসংখ্যার সীমা চেক করা
if (x > MaxInt) or (y > MaxInt) then
raise EOverflow.Create('Number exceeds maximum limit');
writeln('Sum: ', x + y);
except
on E: EDivByZero do
writeln('Error: Division by zero.');
on E: EOverflow do
writeln('Error: ', E.Message);
on E: Exception do
writeln('Unexpected error: ', E.Message);
finally
writeln('End of error handling process.');
end;
end.সারাংশ
try: কোড ব্লক যেখানে আপনি ত্রুটি ঘটতে পারে এমন অংশ রাখবেন।except: ত্রুটি ঘটলে তা ধরার এবং এক্সেপশন হ্যান্ডলিং করার জায়গা।finally: সবসময় রান হয়, এখানে আপনি ক্লিনআপ বা রিসোর্স ফ্রি করতে পারেন।
try, except, এবং finally ব্লকগুলি ব্যবহার করে আপনি কোডে বিভিন্ন ত্রুটি বা ব্যতিক্রমকে কার্যকরভাবে হ্যান্ডেল করতে পারবেন, যাতে প্রোগ্রামটি ক্র্যাশ না করে এবং প্রাসঙ্গিক ত্রুটি বার্তা বা প্রতিক্রিয়া প্রদান করতে পারে।
Read more